// 题目链接：https://www.luogu.com.cn/problem/P2678

#include <iostream>

using namespace std;

const int N = 50010;
int L, n, m;
int a[N];

bool check(int d)
{
    int cnt = 0;
    int prev = 0, cur = 0;
    while (cur < n + 1)
    {
        ++cur;
        while (a[cur] - a[prev] < d)
        {
            ++cnt;
            if (cur < n + 1)
            {
                ++cur;
            }
            else
            {
                if (cnt <= m)
                    return true;
                else
                    return false;
            }
        }
        prev = cur;
    }

    if (cnt <= m)
        return true;
    else
        return false;
}

int binary_search()
{
    int l = 0, r = L + 1;
    int mid;
    while (l + 1 < r)
    {
        mid = (l + r) / 2;
        if (check(mid))
            l = mid;
        else
            r = mid;
    }

    if (check(r))
        return r;
    else
        return l;
}

int main()
{
    scanf("%d %d %d", &L, &n, &m);
    for (int i = 1; i <= n; ++i)
    {
        scanf("%d", &a[i]);
    }
    a[0] = 0;
    a[n + 1] = L;

    int res = binary_search();
    printf("%d", res);

    return 0;
}